package ru.tennisworld.user.exceptions;


import lombok.Getter;
import org.springframework.http.HttpStatus;
import ru.tennisworld.user.enums.ErrorResponseCode;
import ru.tennisworld.user.utils.ValidationResult;

@Getter
public class TennisUserValidationException extends TennisUserServiceException {

    private ValidationResult validationResult;

    public TennisUserValidationException(ValidationResult validationResult) {
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(String message, ValidationResult validationResult) {
        super(message);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(String message, Throwable cause, ValidationResult validationResult) {
        super(message, cause);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(Throwable cause, ValidationResult validationResult) {
        super(cause);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace, ValidationResult validationResult) {
        super(message, cause, enableSuppression, writableStackTrace);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(String message, HttpStatus httpStatus, ValidationResult validationResult) {
        super(message, httpStatus);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(ErrorResponseCode code) {
        super(code, 500);
    }

    public TennisUserValidationException(ErrorResponseCode code, ValidationResult validationResult) {
        super(code, 500);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(ErrorResponseCode code, int httpStatus, ValidationResult validationResult) {
        super(code, httpStatus);
        this.validationResult = validationResult;
    }

    public TennisUserValidationException(String message, ErrorResponseCode code, int httpStatus, ValidationResult validationResult) {
        super(message, code, httpStatus);
        this.validationResult = validationResult;
    }
}
